package com.gm.sfc.net;

import static com.gm.sfc.util.Utility.*;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

/**
 * Jsonパースの基礎クラス
 * @author $Author: y-yamaji $
 * @version $Revision: 6938 $
 */
public class BaseJsonParser {
    /** JSONObject */
    private JSONObject mJsonObject;

    /**
     * JSONObjectを設定
     * @param jsonObject
     */
    public void setJsonObject(JSONObject jsonObject) {
        this.mJsonObject = jsonObject;
    }

    /**
     * 文字列を取得する
     * @param name 検索名
     * @return 文字列
     */
    public String getString(String name) {
        try {
            String data = mJsonObject.getString(name);
            if (isEmpty(data) || "NULL".equals(data) || "null".equals(data)) {
                return null;
            }
            return data;
        } catch (JSONException e) {
            return null;
        }
    }

    /**
     * 数値を取得する
     * @param name 検索名
     * @return 数値
     */
    public int getInt(String name) {
        try {
            return mJsonObject.getInt(name);
        } catch (JSONException e) {
            return 0;
        }
    }

    /**
     * JSONObjectを取得する
     * @param name 検索名
     * @return JSONObject
     */
    public JSONObject getJSONObject(String name) {
        try {
            return mJsonObject.getJSONObject(name);
        } catch (JSONException e) {
            return null;
        }
    }

    /**
     * JSONObjectを取得する
     * @param name 検索名
     * @return JSONObject
     */
    public JSONArray getJSONArray(String name) {
        try {
            return mJsonObject.getJSONArray(name);
        } catch (JSONException e) {
            return null;
        }
    }

    /**
     * JSONObjectを取得する
     * @param name 検索名
     * @return boolean
     */
    public boolean getBoolean(String name) {
        try {
            return mJsonObject.getBoolean(name);
        } catch (JSONException e) {
            return false;
        }
    }

    /**
     * BooleanをInt型で取得する
     * @param name 検索名
     * @return 0:false 1:true
     */
    public int getBooleanInt(String name) {
        return getBoolean(name) ? 1 : 0;
    }
}
